package org.dxy.trigger.http.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.dxy.api.dto.request.material.*;
import org.dxy.api.response.R;
import org.dxy.infrastructure.persistent.db.mybatispuls.po.query.MaterialViewPo;

import java.util.List;

/**
 * 物料应用服务接口
 * @author dxy
 * @createTime 2025/9/7
 */
public interface MaterialApplicationService {

    /**
     * 创建物料
     */
    R<Long> create(CreateMaterialRequest request);

    /**
     * 分页查询物料列表
     */
    R<Page<MaterialViewPo>> list(Page<MaterialViewPo> page, MaterialViewPo query);

    /**
     * 更新物料信息
     */
    R<Void> update(Long id, UpdateMaterialRequest request);

    /**
     * 更新物料规格
     */
    R<Void> updateSpecification(Long id, UpdateMaterialSpecificationRequest request);

    /**
     * 更新物料计量单位
     */
    R<Void> updateUnit(Long id, UpdateMaterialUnitRequest request);

    /**
     * 更新物料成本
     */
    R<Void> updateCost(Long id, UpdateMaterialCostRequest request);

    /**
     * 启用物料
     */
    R<Void> enable(Long id);

    /**
     * 禁用物料
     */
    R<Void> disable(Long id);

    /**
     * 删除物料
     */
    R<Void> delete(Long id);

    /**
     * 批量删除物料
     */
    R<Void> batchDelete(List<Long> ids);

    /**
     * 获取物料详情
     */
    R<MaterialViewPo> getById(Long id);

    /**
     * 根据群组获取物料列表
     */
    R<List<MaterialViewPo>> getByGroupId(Long groupId);

    /**
     * 获取启用状态的物料列表
     */
    R<List<MaterialViewPo>> getActiveList();
}